package com.example.d2_recursion;

import java.io.File;

/**
 * 目标：删除非空文件夹
 */
public class RecursionTest5 {
    public static void main(String[] args) {
        deleteDir(new File("D:\\File\\temp"));
    }

    /**
     * 删除非空文件夹
     *
     * @param dir 需要被删除的目录
     */
    private static void deleteDir(File dir) {
        // 判断dir是否等于null 和判断dir是否存在
        if (dir == null || !dir.exists()) {
            return;
        }

        // 如果是文件就直接删除
        if (dir.isFile()) {
            dir.delete();
            return;
        }

        // 1.获取当前目录下的所有一级文件对象
        File[] files = dir.listFiles();
        if (files == null) {
            // 说明没有权限获取这个文件夹
            return;
        }

        // 说明当前文件夹是一个有内容的文件夹,遍历这个一级文件对象
        for (File file : files) {
            // 判断这个file是文件还是文件夹
            if (file.isFile()) {
                // 说明是文件删除
                file.delete();
            } else {
                // 说明是文件夹
                deleteDir(file);
            }
        }

        // 当上面的执行结束之后,文件夹中的所有文件都被删除了,最后删除这个文件夹
        dir.delete();
    }
}
